package furn.service.impl;

import furn.bean.Furn;
import furn.bean.FurnExample;
import furn.dao.FurnMapper;
import furn.service.FurnService;
import org.springframework.stereotype.Service;
import org.springframework.util.StringUtils;

import javax.annotation.Resource;
import java.util.List;


@Service
public class FurnServiceImpl implements FurnService {
    //传统方式： new FurnMapper() 来创建一个实例对象，从而调用该对象的方法
    //注解方式：注入持久层。即FurnMapper接口对象【实际上是代理对象】。
    // 即  service层  调用  dao层
    @Resource
    private FurnMapper furnMapper;

    //重写父类接口的save方法
    @Override
    public void save(Furn furn) {
        //由于furn表中的id为自增字段，因此只有使用insertSelective方法，才能插入成功。
        furnMapper.insertSelective(furn);
    }

    @Override
    public List<Furn> findAll() {
        //根据FurnMapper.xml文件中的配置信息可知，当参数为null时，查询所有家居信息
        return furnMapper.selectByExample(null);
    }

    @Override
    public void update(Furn furn) {
        //选择性修改家居信息
        furnMapper.updateByPrimaryKeySelective(furn);
    }

    @Override
    public void delete(Integer id) {
        //根据主键删除家居信息
        furnMapper.deleteByPrimaryKey(id);
    }

    @Override
    public Furn findById(Integer id) {
        //根据主键查询家居信息
        return furnMapper.selectByPrimaryKey(id);
    }

    @Override
    public List<Furn> findByName(String name) {
        //1、创建FurnExample对象
        FurnExample furnExample = new FurnExample();
        //2、创建Criteria对象
        FurnExample.Criteria criteria = furnExample.createCriteria();
        //3、根据Criteria对象设置查询条件
        if (StringUtils.hasText(name)) {   //判断name是否为空
            criteria.andNameLike("%" + name + "%");
        }
        //4、根据FurnExample对象查询家居信息并返回
        //注：如果 name为null，则底层会默认查询所有家居信息
        return furnMapper.selectByExample(furnExample);
    }
}
